// PROGRAMA : CTLPA007
// BIBLIOTECA : PRODETR
// SISTEMA : INFORMACOES DE SEGURANCA PUBLICA - SISP
// CLIENTE : GEJUSPC - SEC. DA JUSTICA, SEGURANCA PUBLICA E
// CIDADANIA / INSTITUTO DE IDENTIFICACAO
// PROGRAMADOR : EDNA PINTO E BRUNO LOPES DATA: 17/02/98
// OBJETIVO : RECUPERAR DADOS DO HISTORICO
// DATA ALTERACAO POR QUEM
// 09/02/2000 : ACERTO DE DATA E LOGICA SOLON MIRANDA

package br.com.vti.sisp_sicrim.antigo.controller.programa;

import br.com.caelum.vraptor.Post;
import br.com.caelum.vraptor.Path;
import br.com.caelum.vraptor.Resource;
import br.com.caelum.vraptor.Result;
import br.com.vti.sisp_sicrim.antigo.controller.tela.Idcte007;
import br.com.vti.sisp_sicrim.antigo.model.DidCadastro;
import br.com.vti.sisp_sicrim.antigo.model.DidHistorico;
import br.com.vti.sisp_sicrim.antigo.model.Estla001;
import br.com.vti.sisp_sicrim.antigo.model.Idcla001;
import br.com.vti.sisp_sicrim.antigo.util.ExceptionProgram;
import br.com.vti.sisp_sicrim.antigo.util.Sessao;
import br.com.vti.sisp_sicrim.antigo.util.Sisgsisp;
import br.com.vti.sisp_sicrim.antigo.util.UtilBean;

/**
 * Classe : Ctlpa007 OBJETIVO : RECUPERAR DADOS DO HISTORICO *
 * 
 * @author Incode - Data: mai/2014
 * 
 */
@Resource
@Path("/antigo/ctlpa007")
public class Ctlpa007 {
	// Estado Anterior
	Ctlpa007 ctlpa007Anterior;
	// Views utilizadas
	DidCadastro vwDidcad = new DidCadastro();
	DidHistorico vwDidhis = new DidHistorico();
	// Telas/relatorios utilizados
	Idcte007 idcte007;
	// Includes utilizados
	Estla001 estla001 = new Estla001();
	Idcla001 idcla001 = new Idcla001();
	// Areas globais / session
	Sisgsisp sisgsisp; // Funcoes/subrotinas
	FuncoesGerais funcoes = new FuncoesGerais();

	Result result;
	Sessao sessao;
	Boolean primeiraVez = false;
	private int dtat;
	private String[][] dedos = new String[6][3];
	// private int matesp;
	// private String nomeClasse = this.getClass().getSimpleName();
	// private long regger;
	// private String ctl;
	private String faseproc = "0";

	private Idcte007 preMapas() {
		idcte007 = new Idcte007(true, sessao);
		idcte007.setNomeClasse(this.getClass().getSimpleName().toUpperCase());
		estla001.cpo = 5;
		estla001.esttip = 99;
		for (int i = 0; i < dedos.length; i++) {
			for (int j = 0; j < dedos[i].length; j++) {
				dedos[i][j] = "";
			}
		}
		return idcte007;
	}

	public Ctlpa007(Result result, Sessao sessao) {
		this.result = result;
		this.sessao = sessao;
	}

	@Post
	public void executar(Idcte007 idcte007) {
		try {
			main(idcte007);
		} catch (Exception e) {
			throw new ExceptionProgram(e, sessao, this.getClass().getSimpleName());
		}
	}

	private void main(Idcte007 pidcte007) {
		if (pidcte007 == null) {
			primeiraVez = true;
			idcte007 = preMapas();
			idcte007.setNavegar("../ctlpa007/executar");
			sessao.setAtributo("CTLPA007", this);
			result.include("idcte007", idcte007);
			idcte007.enviarTela(primeiraVez, result, getClass().getSimpleName().toUpperCase());
			return;
		} else {
			restaurarEstados(pidcte007);
		}

		idcte007.receberTela(false, result);
		if (!idcte007.getOperacao().equals("ABI")) {
			funcoes.sissm001(result, sessao);
			return;
		}

		if (!UtilBean.funcao.equals(UtilBean.ctt_processa)) {
			idcte007.enviarMensagem(null, "TECLA INVALIDA");
			sessao.setAtributo("CTLPA007", this);
			result.include("idcte007", idcte007);
			idcte007.enviarTela(primeiraVez, result, getClass().getSimpleName().toUpperCase());
			return;
		}

		funcoes.tabsemi(sessao);
		if (!funcoes.camret.equals("")) {
			sessao.setAtributo("CTLPA007", this);
			result.include("idcte007", idcte007);
			idcte007.enviarTela(primeiraVez, result, getClass().getSimpleName().toUpperCase());
			return;
		}

		while (vwDidhis.pesquisaNumeroRg(idcte007.getRegger())) {

			idcla001.iNumpos = vwDidhis.getNumeroPosto();
			idcla001.iRegger = vwDidhis.getNumeroRg();
			idcla001.iNomide = vwDidhis.getNomeIdent();
			idcla001.iNompai = vwDidhis.getNomePai();
			idcla001.iNommae = vwDidhis.getNomeMae();
			idcla001.iEstciv = vwDidhis.getEstadoCivil();
			idcla001.iNacion = vwDidhis.getNacionalidade();
			idcla001.iNumcpf = vwDidhis.getNumeroCpf();
			idcla001.iMatfua = vwDidhis.getMatriculaFunc();
			idcla001.iCodano = vwDidhis.getCodigoAnomalia();
			idcla001.iNumpro = vwDidhis.getNumeroProtocolo();
			dedos[1][1] = vwDidhis.getPolegarDireito();
			dedos[2][1] = vwDidhis.getIndicadorDireito();
			dedos[3][1] = vwDidhis.getMedioDireito();
			dedos[4][1] = vwDidhis.getAnularDireito();
			dedos[5][1] = vwDidhis.getMinimoDireito();
			dedos[1][2] = vwDidhis.getPolegarEsquerdo();
			dedos[2][2] = vwDidhis.getIndicadorEsquerdo();
			dedos[3][2] = vwDidhis.getMedioEsquerdo();
			dedos[4][2] = vwDidhis.getAnularEsquerdo();
			dedos[5][2] = vwDidhis.getMinimoEsquerdo();
			idcla001.iDatnas = vwDidhis.getDataNasc();
			dtat = UtilBean.obtemDataCorrente();
			if (vwDidhis.getNumeroRg() != idcte007.getRegger()) {
				UtilBean.mensagemTexto("REGISTRO NAO ENCONTRADO");
			} else {
				UtilBean.mensagemTexto("REGISTRO O.K");
			}

		}
		vwDidhis.fecha();
		vwDidcad.consultaNumeroRg(idcte007.getRegger());
		if (vwDidcad.registrosProcessados() == 0) {
			vwDidcad.setNumeroProtocolo(idcla001.iNumpro);
			vwDidcad.setNumeroPosto(idcla001.iNumpos);
			vwDidcad.setNomeIdent(idcla001.iNomide);
			vwDidcad.setNomePai(idcla001.iNompai);
			vwDidcad.setNomeMae(idcla001.iNommae);
			vwDidcad.setNumeroRg(idcla001.iRegger);
			vwDidcad.setCodigoAnomalia(idcla001.iCodano);
			vwDidcad.setDataNasc(idcla001.iDatnas);
			vwDidcad.setNumeroCpf(idcla001.iNumcpf);
			vwDidcad.setEstadoCivil(idcla001.iEstciv);
			vwDidcad.setNacionalidadeIdent(idcla001.iNacion);
			vwDidcad.setMatriculaFuncionario(sessao.getSisgsisp().getMatric());
			vwDidcad.setPolegarDireito(dedos[1][1]);
			vwDidcad.setIndicadorDireito(dedos[2][1]);
			vwDidcad.setMedioDireito(dedos[3][1]);
			vwDidcad.setAnularDireito(dedos[4][1]);
			vwDidcad.setMinimoDireito(dedos[5][1]);
			vwDidcad.setPolegarEsquerdo(dedos[1][2]);
			vwDidcad.setIndicadorEsquerdo(dedos[2][2]);
			vwDidcad.setMedioEsquerdo(dedos[3][2]);
			vwDidcad.setAnularEsquerdo(dedos[4][2]);
			vwDidcad.setMinimoEsquerdo(dedos[5][2]);
			vwDidcad.grava();
			// //dao.commit();
			funcoes.estna001(estla001.cpo, estla001.esttip, estla001.qde, sessao.getSisgsisp().getVar(), sessao.getSisgsisp().getMatric());
		}
		vwDidcad.fecha();
		// //dao.rollback();

		Idcpm001 idcpm001 = new Idcpm001(result, sessao); // STACK
		idcpm001.executar(null);

		// UtilBean.salvaAcao("br.com.vti.sisp.controller.programa.Idcpm001");
		// sessao.setAtributo("CTLPA007", this);
		// result.include("idcte007", idcte007);
		// idcte007.enviarTela(primeiraVez, result, getClass().getSimpleName().toUpperCase());
	}

	private void restaurarEstados(Idcte007 pidcte007) {
		this.ctlpa007Anterior = (Ctlpa007) sessao.getAtributo("CTLPA007");
		if (pidcte007 != null) {
			idcte007 = pidcte007;
		} else {
			idcte007 = this.ctlpa007Anterior.idcte007;
		}
		idcte007.setSessao(sessao);
		this.faseproc = this.ctlpa007Anterior.faseproc;
		this.dedos = this.ctlpa007Anterior.dedos;
		this.estla001 = this.ctlpa007Anterior.estla001;
	}
}
